/*
 *  author: Gregorovichz Carlos Rossi
 *  date: 15/05/2010
 */
var registroRequisitoDocumento=null;
var winMantenerRequisitoDocumento=null;
var dsRequisitoDocumento = null;
function gestionarRequisitos(){
    var frmRequisitoCabecera =new Ext.Panel({
        bodyBorder:true,
        height:150,
        bodyStyle: "background-color:#DFE8F6; border:0"
    });
    dsRequisitoDocumento =new Ext.data.Store({
        autoDestroy: true,
        url: "lista-requisitos!asignados",
        reader: new Ext.data.JsonReader(
        {
            root: "requisitosasignados",
            fields:[{
                name: "ctidoDescripcion",
                type: "string"
            },{
                name: "ntidoIdentificador",
                type: "integer"
            }]
        })
    });

    dsRequisitoDocumento.on("exception",function(proxy, type, action, options, response, arg){
        Ext.MessageBox.alert("Error","Sucedio un error al cargar los Requisitos por Documento"+response.responseText);
    });

    var grdRequisitoDocumento=new Ext.grid.GridPanel({
        store: dsRequisitoDocumento,
        loadMask: false,
        height:470,
        width:1050,
        border:true,
        frame: true,
        plugins:[new Ext.ux.grid.Search({
            mode:'local',
            iconCls:false,
            minLength:2,
            width: 290
        })],
        columns:[new Ext.grid.RowNumberer(),{
            header: "Documento Requisito",
            dataIndex: "ctidoDescripcion",
            width: 500,
            sortable:true
        }],
        tbar:[{
            text:'Asignar Requisito',
            iconCls:'icon-add',
            handler: function(){
                MantenerRequisito();
            }
        },'-',{
            text:'Imprimir',
            iconCls:'icon-print',
            handler: function(){
                imprimirRequisito();
            }
        }]
    });
    var seleccionEstadoDocumento=grdRequisitoDocumento.getSelectionModel();
    seleccionEstadoDocumento.on("rowselect",function(sm,fila,registro){
        registroRequisitoDocumento=registro;
    });

    new Ajax.Request("frmDocumentoRequisito.html",{
        method: "post",
        asynchronous:false,
        onSuccess: function(transport){
            frmRequisitoCabecera.html=transport.responseText;
            var win = new Ext.Window({
                title:'Mantenimiento de Requisitos',
                closeAction:'destroy',
                width:1055,
                height: 500,
                x:0,
                y:0,
                shim:false,
                maximizable:false,
                resizable: false,
                animCollapse:false,
                layout: 'border',
                items:[{
                    region: 'north',
                    height: 40,
                    split: false,
                    border:false,
                    layout:'fit',
                    xtype: 'panel',
                    items: frmRequisitoCabecera
                },{
                    region: 'center',
                    title: 'Lista de Requisitos',
                    height: 200,
                    split: false,
                    border:false,
                    xtype: 'panel',
                    layout:'fit',
                    bodyStyle: "background-color:#DFE8F6; border:0",
                    items: grdRequisitoDocumento
                }]
            });
            win.show();
            cargarTipoDocumento();
            cargarRequisitosDocumentos();
        }
    });
}

function cargarRequisitosDocumentos(){
    dsRequisitoDocumento.reload( {
        params:{
            ntidoIdentificador: document.getElementById("cbotipodocumento").value
        }
    });
}

function cargarTipoDocumento(){
    new Ajax.Request("lista-tipos-documento",{
        method:"post",
        asynchronous:false,
        onSuccess: function (transport){
            var eSelect = document.getElementById("cbotipodocumento");
            removeAllOptions(eSelect);
            var lsttipodocumento= transport.responseText.evalJSON();
            for (var i=0;i<lsttipodocumento.tipos.length;i++){
                var eOption = document.createElement("option");
                eOption.setAttribute("value", lsttipodocumento.tipos[i].ntidoIdentificador);
                eOption.appendChild(document.createTextNode(lsttipodocumento.tipos[i].ctidoDescripcion));
                eSelect.appendChild(eOption);
            }
            cargarRequisitosDocumentos();
        }
    });
}

function MantenerRequisito(){
    var vntAsignarRequisito = new Ext.Window({
        title: "Asignar Requisitos",
        modal: true,
        closeAction: "destroy",
        width: 930,
        height: 300,
        autoLoad:{
            url: "frmAsignarRequisito.html",
            callback: function(el,success,response,options) {
                cargarRequisitosAsignados(document.getElementById("cbotipodocumento").value);
                cargarRequisitosDisponibles(document.getElementById("cbotipodocumento").value);
            }
        },
        bbar:[{
            text:'Cerrar',
            iconCls:'icon-cancel',
            handler: function(){
                Information("Aviso del Sistema","Sus cambios se grabaron satisfactoriamente.");
                vntAsignarRequisito.destroy();
                cargarRequisitosDocumentos();
            }
        }]
    });
    vntAsignarRequisito.show();
}

function cargarRequisitosAsignados(documento){
    var ndocuid = documento;
    new Ajax.Request("lista-requisitos!asignados",{
        method: "post",
        parameters: {
            ntidoIdentificador: ndocuid
        },
        onSuccess: function(t) {
            var data = t.responseText.evalJSON();
            var requisitosAsignados = document.getElementById("lstRequisitosAsignados");
            for(var i = 0; i < data.requisitosasignados.length; i++) {
                var option = document.createElement("option");
                option.value = data.requisitosasignados[i].ntidoIdentificador;
                option.appendChild(document.createTextNode(data.requisitosasignados[i].ctidoDescripcion));
                requisitosAsignados.appendChild(option);
            }
        }
    });
}

function cargarRequisitosDisponibles(documento){
    var ndocuid = documento;
    new Ajax.Request("lista-requisitos!disponibles",{
        method: "post",
        parameters: {
            ntidoIdentificador: ndocuid
        },
        onSuccess: function(t) {
            var data = t.responseText.evalJSON();
            var requisitosAsignados = document.getElementById("lstRequisitosDisponibles");
            for(var i = 0; i < data.requisitosdisponibles.length; i++) {
                var option = document.createElement("option");
                option.value = data.requisitosdisponibles[i].ntidoIdentificador;
                option.appendChild(document.createTextNode(data.requisitosdisponibles[i].ctidoDescripcion));
                requisitosAsignados.appendChild(option);
            }
        }
    });
}

function revocarRequisito(){
    var nreqIdentificador = document.getElementById("cbotipodocumento").value;
    var requisitosDisponibles = document.getElementById("lstRequisitosDisponibles");
    var requisitosAsignados = document.getElementById("lstRequisitosAsignados");
    var encontro = false;
    for(var i = 0; i < requisitosAsignados.options.length; i++) {
        if(requisitosAsignados.options[i].selected) {
            eliminarRequisito(nreqIdentificador, requisitosAsignados.options[i], requisitosDisponibles);
            encontro = true;
            break;
        }
    }
    if(encontro) {
        revocarRequisito();
    }
}

function eliminarRequisito(nreqIdentificador, requisito, requisitosDisponibles){
    new Ajax.Request("requisito!eliminar",{
        method: "post",
        asynchronous: false,
        parameters: {
            ntidoIdentificadorPrincipal: nreqIdentificador,
            ntidoIdentificadorRequisito: requisito.value,
            crequObservacion:''
        },
        onSuccess: function(t) {
            var data = t.responseText.evalJSON();
            if(data.success) {
                requisitosDisponibles.appendChild(requisito);
            }
        }
    });
}

function asignarRequisito(){
    var nreqIdentificador = document.getElementById("cbotipodocumento").value;
    var requisitosDisponibles = document.getElementById("lstRequisitosDisponibles");
    var requisitosAsignados = document.getElementById("lstRequisitosAsignados");
    var encontro = false;
    for(var i = 0; i < requisitosDisponibles.options.length; i++) {
        if(requisitosDisponibles.options[i].selected) {
            ingresarRequisito(nreqIdentificador, requisitosDisponibles.options[i], requisitosAsignados);
            encontro = true;
            break;
        }
    }
    if(encontro) {
        asignarRequisito();
    }
}

function ingresarRequisito(nreqIdentificador, requisito, requisitosAsignados) {
    new Ajax.Request("requisito!input",{
        method: "post",
        asynchronous: false,
        parameters: {
            ntidoIdentificadorPrincipal: nreqIdentificador,
            ntidoIdentificadorRequisito: requisito.value,
            crequObservacion:''
        },
        onSuccess: function(t) {
            var data = t.responseText.evalJSON();
            if(data.success) {
                requisitosAsignados.appendChild(requisito);
            }
        }
    });
}

function imprimirRequisito(){
    var width  = screen.width-50;
    var height = screen.height-100;
    var left   = 10;
    var top    = 10;
    var registroactual =  document.getElementById("cbotipodocumento").value;
    var params = 'width='+width+',height='+height;
    params += ',top='+top+',left='+left;
    params += ',directories=no';
    params += ',location=no';
    params += ',menubar=no';
    params += ',resizable=yes';
    params += ',scrollbars=no';
    params += ',status=no';
    params += ',toolbar=no';
    window.open("RequisitosTramiteServlet.pdf?ntidocodigo="+registroactual,'windowname',params);
}